package mock

import bean.Orders
import com.google.gson.Gson

import java.io.{File, PrintWriter}
import java.text.SimpleDateFormat
import scala.collection.mutable.ArrayBuffer
import scala.util.Random

/**
 * @作者 YanTianCheng
 * @时间 2024/1/28 22:08
 * @文件: Simulator
 * @项目 mock
 */
object Simulator0001 {
  //用户信息
  val arr1 = (10000000000L to 999999999999L).map(_.toString)  // 用户ID
  //用户昵称
  val arr2 = Array("刘一","陈二","张三","李四","王五","赵六","孙七","周八","吴九","郑十","小明","小红","小亮","小华","小李","小赵","小钱","小孙","小周","小吴","小郑","小李")
  val arr3 = (10000000000L to 999999999999L).map(_.toString)  // 电话

  //商家信息
  val arr4 =   (1000000L to 9999999L).map(_.toString)  // 商家ID

  val arr5 =  Array("上海市","云南省","内蒙古自治区","北京市",	"吉林省"	,"四川省","天津市","宁夏回族自治区","安徽省","山东省","山西省",	"广东省","广西壮族自治区","新疆维吾尔自治区	","江苏省",	"江西省"	,"河北省","河南省","浙江省","海南省","湖北省",	"湖南省","甘肃省","福建省","西藏自治区","贵州省","辽宁省",	"重庆市","陕西省","青海省","黑龙江省")
  val arr6 =  Array("三亚市", "三明市", "三门峡市", "上海市", "上饶市", "东莞市", "中山市", "临夏回族自治州", "临汾市", "临沂市", "临沧市", "丹东市", "丽水市", "丽江市", "乌海市", "乌鲁木齐市", "乐山市", "九江市", "云浮市", "亳州市", "伊春市", "伊犁哈萨克自治州", "佛山市", "佳木斯市", "保定市", "保山市", "信阳市", "儋州市", "克孜勒苏柯尔克孜自治州", "克拉玛依市", "六安市", "六盘水市", "兰州市", "兴安盟", "内江市", "凉山彝族自治州", "包头市", "北京市", "北海市", "十堰市", "南京市", "南宁市", "南平市", "南昌市", "南通市", "南阳市", "厦门市", "双鸭山市", "台州市", "合肥市", "吉安市", "吉林市", "吕梁市", "周口市", "呼伦贝尔市", "呼和浩特市", "咸宁市", "咸阳市", "哈密市", "哈尔滨市", "唐山市", "商丘市", "商洛市", "喀什地区", "嘉兴市", "四平市", "塔城地区", "大兴安岭地区", "大同市", "大庆市", "大理白族自治州", "大连市", "天津市", "太原市", "威海市", "娄底市", "孝感市", "宁波市", "安庆市", "安康市", "安阳市", "宜宾市", "宜昌市", "宜春市", "宣城市", "宿州市", "宿迁市", "岳阳市", "巴彦淖尔市", "巴音郭楞蒙古自治州", "常州市", "常德市", "平凉市", "广元市", "广安市", "广州市", "庆阳市", "廊坊市", "延安市", "延边朝鲜族自治州", "开封市", "张家口市", "张掖市", "徐州市", "德宏傣族景颇族自治州", "德州市", "德阳市", "忻州市", "怀化市", "恩施土家族苗族自治州", "惠州市", "成都市", "扬州市", "承德市", "抚州市", "抚顺市", "揭阳市", "攀枝花市", "文山壮族苗族自治州", "新乡市", "新余市", "新疆维吾尔自治区", "无锡市", "日照市", "昆明市", "昌吉回族自治州", "昌都市", "昭通市", "晋中市", "晋城市", "普洱市", "景德镇市", "曲靖市", "朔州市", "来宾市", "杭州市", "柳州市", "株洲市", "桂林市", "梧州市", "武汉市", "毕节市", "永州市", "汉中市", "汕头市", "汕尾市", "江门市", "池州市", "沈阳市", "沧州市", "河池市", "河源市", "泉州市", "泰州市", "洛阳市", "济南市", "济宁市", "海南省", "淄博市", "淮南市", "淮安市", "深圳市", "清远市", "温州市", "湖州市", "湘潭市", "湛江市", "滁州市", "漯河市", "漳州市", "潍坊市", "潮州市", "濮阳市", "烟台市", "焦作市", "牡丹江市", "玉林市", "玉溪市","珠海市", "甘孜藏族自治州", "白城市", "白山市", "百色市", "益阳市", "盐城市", "盘锦市", "眉山市", "石家庄市", "福州市", "秦皇岛市", "红河哈尼族彝族自治州", "绍兴市", "绥化市", "绵阳市", "聊城市", "肇庆市", "自贡市", "舟山市", "芜湖市", "苏州市", "茂名市", "荆州市", "莆田市", "菏泽市", "营口市", "蚌埠市", "衡水市", "衡阳市", "衢州市", "襄阳市", "西双版纳傣族自治州", "西宁市", "西安市", "贵港市", "贵阳市", "贺州市", "资阳市", "赣州市", "赤峰市", "辽阳市", "达州市", "连云港市", "通化市", "通辽市", "遂宁市", "遵义市", "邢台市", "邯郸市", "邵阳市", "郑州市", "鄂州市", "重庆市", "金华市", "钦州市", "铁岭市", "银川市", "镇江市", "长春市", "长沙市", "阜阳市", "防城港市", "阳江市", "青岛市", "马鞍山市", "驻马店市", "黄冈市", "黄山市", "黄石市", "黑河市")
  val ProvinceCity = Map("上海市" -> Set("上海市"),
    "云南省" -> Set("临沧市", "丽江市", "保山市", "大理白族自治州", "德宏傣族景颇族自治州", "文山壮族苗族自治州", "昆明市", "昭通市", "普洱市", "曲靖市", "玉溪市", "红河哈尼族彝族自治州", "西双版纳傣族自治州"),
    "内蒙古自治区" -> Set("乌海市", "兴安盟", "包头市", "呼伦贝尔市", "呼和浩特市", "巴彦淖尔市", "赤峰市", "通辽市"),
    "北京市" -> Set("北京市"),
    "吉林省" -> Set("吉林市", "四平市", "延边朝鲜族自治州", "白城市", "白山市", "通化市", "长春市"),
    "四川省" -> Set("乐山市", "内江市", "凉山彝族自治州", "宜宾市", "广元市", "广安市", "德阳市", "成都市", "攀枝花市", "甘孜藏族自治州", "眉山市", "绵阳市", "自贡市", "资阳市", "达州市", "遂宁市"),
    "天津市" -> Set("天津市"),
    "宁夏回族自治区" -> Set("银川市", "石嘴山市", "吴忠市", "固原市"),
    "安徽省" -> Set("亳州市", "池州市", "蚌埠市", "淮南市", "滁州市", "马鞍山市", "芜湖市", "宣城市", "六安市", "宿州市", "阜阳市", "安庆市", "黄山市", "淮北市", "铜陵市", "滁州市", "宿州市", "池州市", "合肥市", "巢湖市", "蚌埠市", "淮南市"),
    "山东省" -> Set("滨州市", "德州市", "东营市", "菏泽市", "济南市", "济宁市", "莱芜市", "聊城市", "临沂市", "青岛市", "日照市", "泰安市", "威海市", "潍坊市", "烟台市", "枣庄市", "淄博市"),
    "山西省" -> Set("临汾市", "吕梁市", "大同市", "太原市", "忻州市", "晋中市", "晋城市", "朔州市"),
    "广东省" -> Set("东莞市", "中山市", "云浮市", "佛山市", "广州市", "惠州市", "揭阳市", "汕头市", "汕尾市", "江门市", "河源市", "深圳市", "清远市", "湛江市", "潮州市", "珠海市", "肇庆市", "茂名市", "阳江市"),
    "广西壮族自治区" -> Set("百色市", "北海市", "崇左市", "防城港市", "桂林市", "河池市", "贺州市", "来宾市", "柳州市", "南宁市", "钦州市", "梧州市", "玉林市"),
    "新疆维吾尔自治区" -> Set("阿克苏地区", "阿拉尔市", "阿勒泰地区", "巴音郭楞蒙古自治州", "博尔塔拉蒙古自治州", "昌吉回族自治州", "哈密地区", "和田地区", "克孜勒苏柯尔克孜自治州", "喀什地区", "克拉玛依市", "石河子市", "图木舒克市", "吐鲁番地区", "乌鲁木齐市", "五家渠市", "伊犁哈萨克自治州"),
    "江苏省" -> Set("常州市", "淮安市", "连云港市", "南京市", "南通市", "苏州市", "宿迁市", "泰州市", "无锡市", "徐州市", "盐城市", "扬州市", "镇江市"),
    "江西省" -> Set("抚州市", "赣州市", "吉安市", "景德镇市", "萍乡市", "上饶市", "九江市", "南昌市", "鹰潭市"),
    "河北省" -> Set("保定市", "沧州市", "承德市", "邯郸市", "衡水市", "廊坊市", "秦皇岛市", "石家庄市", "唐山市", "邢台市", "张家口市"),
    "河南省" -> Set("安阳市", "鹤壁市", "焦作市", "开封市", "洛阳市", "漯河市", "南阳市", "平顶山市", "濮阳市", "三门峡市", "商丘市", "新乡市", "信阳市", "许州市", "周口市", "驻马店市"),
    "浙江省" -> Set("杭州市", "湖州市", "嘉兴市", "金华市", "丽水市", "宁波市", "衢州市", "绍兴市", "台州市", "温州市", "舟山市"),
    "海南省" -> Set("儋州市", "海口市", "三亚市"),
    "湖北省" -> Set("恩施土家族苗族自治州", "鄂州市", "黄冈市", "黄石市", "荆门市", "荆州市", "潜江市", "神农架林区", "十堰市", "随州市", "武汉市", "天门市", "孝感市", "咸宁市", "仙桃市", "宜昌市", "襄阳市", "鄂州市"),
    "湖南省" -> Set("长沙市", "常德市", "郴州市", "衡阳市", "怀化市", "娄底市", "邵阳市", "湘潭市", "湘西土家族苗族自治州", "益阳市", "永州市", "岳阳市", "张家界市", "株洲市"),
    "甘肃省" -> Set("白银市", "定西市", "甘南藏族自治州", "嘉峪关市", "金昌市", "陇南市", "临夏回族自治州", "平凉市", "庆阳市", "天水市", "武威市", "张掖市"),
    "福建省" -> Set("福州市", "龙岩市", "南平市", "宁德市", "莆田市", "泉州市", "三明市", "厦门市", "漳州市"),
    "贵州省" -> Set("安顺市", "毕节市", "六盘水市", "贵阳市", "黔东南苗族侗族自治州", "黔南布依族苗族自治州", "黔西南布依族苗族自治州", "铜仁市", "遵义市"),
    "辽宁省" -> Set("鞍山市", "本溪市", "朝阳市", "大连市", "丹东市", "抚顺市", "阜新市", "葫芦岛市", "锦州市", "辽阳市", "盘锦市", "沈阳市", "铁岭市", "营口市"),
    "西藏自治区" -> Set("阿里地区", "昌都地区", "林芝地区", "那曲地区", "日喀则地区", "山南地区"),
    "陕西省" -> Set("安康市", "宝鸡市", "汉中市", "商洛市", "铜川市", "渭南市", "西安市", "咸阳市", "延安市", "榆林市"),
    "青海省" -> Set("西宁市", "海东地区", "海北藏族自治州", "黄南藏族自治州", "海南藏族自治州", "果洛藏族自治州", "玉树藏族自治州"),
    "黑龙江省" -> Set("大庆市", "大兴安岭地区", "哈尔滨市", "鹤岗市", "黑河市", "鸡西市", "佳木斯市", "牡丹江市", "七台河市", "齐齐哈尔市", "双鸭山市", "绥化市")
  )
  val ordersMap = collection.mutable.HashMap[String, ArrayBuffer[Long]]()
  val restaurantMap = collection.mutable.HashMap[String, ArrayBuffer[String]]()
  val sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
  var ordersID = 1
//  for (userID <- arr1; cityID <- arr6 if ProvinceCity.get(arr5).contains(arr6); restaurantID <- arr4; food_categoryID <- arr5) {
//    val key = new StringBuilder()
//      .append(appID).append("^")
//      .append(cityID).append("^")
//      .append(restaurantID).append("^")
//      .append(food_categoryID)




  def main(args: Array[String]): Unit = {
    val printWriterOrders = new PrintWriter(new File("output/order_info.json"))
    val gson = new Gson()
    for (i <- 1 to 3000) {
      println(s"第{$i}条")
      val jsonString = gson.toJson(genOrder())
      println(jsonString)
      printWriterOrders.write(jsonString + "\n")
      //Thread.sleep(200)
    }
    printWriterOrders.flush() //将缓冲的输出数据刷新到目标输出流中，但并不关闭PrintWriter对象，可以继续进行输出操作
    printWriterOrders.close() //先调用flush()方法将缓冲区数据刷新到输出流中，然后关闭PrintWriter对象，关闭后不能再进行输出操作，如果再调用输出方法会抛出异常
  }

  def genOrder()={
//    val userIDRandom = arr1(Random.nextInt(arr1.length))
//    val userNameRandom = arr2(Random.nextInt(arr2.length))
//    val userPhoneRandom = arr3(Random.nextInt(arr3.length))
//    val storeIDRandom = arr4(Random.nextInt(arr4.length))
//    val provinceRandom = arr5(Random.nextInt(arr5.length))
//    val cityRandom = arr6(Random.nextInt(arr6.length))
//    val orderID = Random.nextIn





    // 指定日期范围
    val startDate = "2022-01-01"
    val endDate = "2022-12-31"

    // 生成随机时间
    val random = new Random()
    val start = sdf.parse(s"$startDate 00:00:00").getTime
    val end = sdf.parse(s"$endDate 23:59:59").getTime
    //Orders(userID, appIDRandom, city, restaurantIDRandom, food_categoryIDRandom, ordersIDRandom, ordersScoreRandom, orderTime, timestamp)
  }
}
